物件在 JavaScript 中是一種用來儲存鍵值對(key-value pairs)的資料結構。每個鍵(key)都是一個屬性名稱,每個值(value)可以是任意類型的數據(例如數字、字串、函數或甚至其他物件)。
const person = {
name: "John", // key 是 'name',value 是 'John'
age: 30, // key 是 'age',value 是 30
isStudent: true // key 是 'isStudent',value 是 true
};
console.log(person.name); // 輸出: "John"
console.log(person.age); // 輸出: 30
中括號記法 (Bracket Notation): 使用中括號 [] 來存取屬性,可以使用字串作為鍵名。
console.log(person["name"]); // 輸出: "John"
console.log(person["age"]); // 輸出: 30
何時用中括號? 當鍵是變數或包含特殊字元(如空格)時,必須使用中括號。
person.gender = "male"; // 新增屬性
person.age = 31; // 修改屬性
console.log(person.gender); // 輸出: "male"
console.log(person.age); // 輸出: 31
delete person.isStudent;
console.log(person.isStudent); // 輸出: undefined
我一開始會用成錯誤的混用方式,元素應該用數字索引來訪問,而不是像物件那樣使用鍵值對的形式。
const bmiStatesData = [
"overThin"= {
"state": "過輕",
"color": "藍色"
},
]
// 這是錯誤的程式碼
使用物件結構:
const bmiStatesData = {
"overThin": {
"state": "過輕",
"color": "藍色"
}
};
使用陣列並保留鍵作為屬性:
const bmiStatesData = [
{
"key": "overThin",
"state": "過輕",
"color": "藍色"
}
];
在 JavaScript 中,引號主要用來標示字串,當在物件中使用引號來包裹屬性的名稱時,它的主要意義是讓屬性名稱被視為字串。下面詳細說明引號的作用:
const person = {
name: "Alice",
age: 25
};
const personWithQuotes = {
"name": "Alice",
"age": 25
};
特殊字元或空格存在於屬性名稱中時,必須使用引號包裹屬性名:
const obj = {
"first name": "Alice", // 使用空格
"is-student": true // 使用連字符
};
如果不加引號,這樣的屬性名會被視為無效語法。
const settings = {
"class": "basic", // 'class' 是保留字,必須加引號
"default": true // 'default' 也是保留字
};
動態屬性:當使用變數作為屬性名時,需要使用中括號而非引號:
const key = "age";
const person = {
[key]: 30 // 動態屬性名
};
console.log(person.age); // 輸出: 30
const validObject = {
name: "Alice", // 沒有引號,因為 'name' 是合法的標識符
"first name": "Alice", // 必須加引號,因為包含空格
age: 25,
"is-student": true, // 必須加引號,因為包含連字符
"$special_value": 100 // 可以不加引號,因為 '$' 是有效的標識符字符
};